using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes.DomainAttributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Enums;
using System.Collections.Generic;
using System.ComponentModel;

namespace Baci.ArcGIS._IndoorsTools
{
    /// <summary>
    /// <para>Configure Indoor Positioning</para>
    /// <para>Writes indoor positioning system configuration information to an ArcGIS Indoors geodatabase. The values are used by ArcGIS Indoors for iOS and ArcGIS Indoors for Android.</para>
    /// <para>将室内定位系统配置信息写入 ArcGIS Indoors 地理数据库。这些值由 ArcGIS Indoors for iOS 和 ArcGIS Indoors for Android 使用。</para>
    /// </summary>    
    [DisplayName("Configure Indoor Positioning")]
    public class ConfigureIndoorPositioning : AbstractGPProcess
    {
        /// <summary>
        /// 无参构造
        /// </summary>
        public ConfigureIndoorPositioning()
        {

        }

        /// <summary>
        /// 有参构造
        /// </summary>
        /// <param name="_in_geodatabase">
        /// <para>Input Geodatabase</para>
        /// <para>The Indoors file or enterprise geodatabase for which IPS configuration information will be generated.</para>
        /// <para>将为其生成 IPS 配置信息的 Indoors 文件或企业级地理数据库。</para>
        /// </param>
        /// <param name="_encryption_key">
        /// <para>Encryption Key</para>
        /// <para>The key used by the tool and Indoors mobile apps to encrypt or unencrypt the API Key parameter (api_key in Python) value.</para>
        /// <para>工具和 Indoors 移动应用程序用于加密或取消加密 API 密钥参数（在 Python 中为 api_key）值的密钥。</para>
        /// </param>
        /// <param name="_api_key">
        /// <para>API Key</para>
        /// <para>A unique value in the form of a GUID used by Indoors mobile apps to enable Indoo.rs indoor positioning. The API key is provided by Indoo.rs.</para>
        /// <para>Indoors 移动应用程序使用的 GUID 形式的唯一值，用于启用 Indoo.rs 室内定位。API 密钥由 Indoo.rs 提供。</para>
        /// </param>
        /// <param name="_building_id">
        /// <para>Building ID</para>
        /// <para>A unique alphanumerical value used by Indoors mobile apps to link the site in the mobile map package to the Indoo.rs indoor positioning survey. The building ID is provided by Indoo.rs.</para>
        /// <para>Indoors 移动应用程序用于将移动地图包中的站点链接到 Indoo.rs 室内定位调查的唯一字母数值。建筑物 ID 由 Indoo.rs 提供。</para>
        /// </param>
        public ConfigureIndoorPositioning(object _in_geodatabase, object _encryption_key, object _api_key, object _building_id)
        {
            this._in_geodatabase = _in_geodatabase;
            this._encryption_key = _encryption_key;
            this._api_key = _api_key;
            this._building_id = _building_id;
        }
        public override string ToolboxName => "Indoors Tools";

        public override string ToolName => "Configure Indoor Positioning";

        public override string CallName => "indoors.ConfigureIndoorPositioning";

        public override List<string> AcceptEnvironments => ["workspace"];

        public override object[] ParameterInfo => [_in_geodatabase, _encryption_key, _api_key, _building_id, _updated_gdb];

        /// <summary>
        /// <para>Input Geodatabase</para>
        /// <para>The Indoors file or enterprise geodatabase for which IPS configuration information will be generated.</para>
        /// <para>将为其生成 IPS 配置信息的 Indoors 文件或企业级地理数据库。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Input Geodatabase")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _in_geodatabase { get; set; }


        /// <summary>
        /// <para>Encryption Key</para>
        /// <para>The key used by the tool and Indoors mobile apps to encrypt or unencrypt the API Key parameter (api_key in Python) value.</para>
        /// <para>工具和 Indoors 移动应用程序用于加密或取消加密 API 密钥参数（在 Python 中为 api_key）值的密钥。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Encryption Key")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _encryption_key { get; set; }


        /// <summary>
        /// <para>API Key</para>
        /// <para>A unique value in the form of a GUID used by Indoors mobile apps to enable Indoo.rs indoor positioning. The API key is provided by Indoo.rs.</para>
        /// <para>Indoors 移动应用程序使用的 GUID 形式的唯一值，用于启用 Indoo.rs 室内定位。API 密钥由 Indoo.rs 提供。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("API Key")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _api_key { get; set; }


        /// <summary>
        /// <para>Building ID</para>
        /// <para>A unique alphanumerical value used by Indoors mobile apps to link the site in the mobile map package to the Indoo.rs indoor positioning survey. The building ID is provided by Indoo.rs.</para>
        /// <para>Indoors 移动应用程序用于将移动地图包中的站点链接到 Indoo.rs 室内定位调查的唯一字母数值。建筑物 ID 由 Indoo.rs 提供。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Building ID")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _building_id { get; set; }


        /// <summary>
        /// <para>Updated Geodatabase</para>
        /// <para></para>
        /// <para></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Updated Geodatabase")]
        [Description("")]
        [Option(OptionTypeEnum.derived)]
        public object _updated_gdb { get; set; }


        public ConfigureIndoorPositioning SetEnv(object workspace = null)
        {
            base.SetEnv(workspace: workspace);
            return this;
        }

    }

}